perm filename TVIN.FAI[CAR,HPM] blob
sn#024422 filedate 1973-06-19 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00005 PAGES
00200 RECORD PAGE DESCRIPTION
00300 00001 00001
00400 00003 00002 ENTRY TVINN, TVMOVE, CONV, TVREAD
00500 00006 00003 set up tv control words
00600 00008 00004 GREY CODE CONVERSION ROUTINE (SUPER FAST)
00700 00012 00005 ERROR ROUTINES FOR TVREAD AND POT READING
00800 00023 ENDMK
00900 ⊗;
00100 ENTRY TVINN, TVMOVE, CONV, TVREAD
00200
00300 TITLE TVINN - TV INPUT SUBROUTINE
00400
00500 DTV←17
00600 EXTERNAL ADJUST, TVWORD, BCLIP, TCLIP, FLINE, TVCAM, HOFF, VOFF
00700 EXTERNAL LSIDE, RSIDE, IWID, LINLEN, LLINE, BITS, STV, STVFL
00800 INTERNAL ERROR, .P1., .P3., .TVWD.
00900 OPDEF SUBR [PUSHJ 17,0]
01000 OPDEF RETURN [POPJ 17,]
01100
01200 ; read tv camera
01300
01400 TVREAD: PUSH 17,
01500 PUSH 17,1
01600 SETZM STV; SET READ FLAGS APPROPRIATELY
01700 SETOM STVFL
01800 LAB25: SETZM MISCNT#; CLEAR ERROR COUNTERS
01900 SETZM PARCNT#
02000 .P1.: SKIP; INITIALIZE POT READING
02100 INPUT DTV,TVWD; FILL BUFFER
02200 MOVE 1,TVWD+3; SAVE STATUS BITS
02300 SETZM TVWD+3; END POT READING
02400 TRNE 1,100040; TEST FOR DATA MISSED
02500 JRST [ SPCWAR 636367; TURN OFF SPCWAR IN CASE IT WAS ON
02600 TRNE 1,100000; TEST FOR PARITY ERROR
02700 JRST .+1
03200 AOS 1,MISCNT
03300 CAIG 1,50000; 50 JILLION DATA MISSED ERRORS ALLOWED
03400 JRST .P1.]
03700 TRNE 1,20; TEST FOR SYSTEM ERROR
03800 JRST .P1.
04000 TRNN 1,10; TEST FOR DONE FLAG
04100 JRST .P1.
04300 .P3.: SKIPA; CHECK POT READINGS
04400 JRST HANG+1
04500 POP 17,1
04600 POP 17,
04700 RETURN
04800
04900 .TVWD.:
05000 TVWD: 0 ; TV CONTROL WORDS
05100 000002
05200 0
05300 0
00100 ; set up tv control words;
00200
00300 TVMOVE: SUBR ACSAVE
00400 MOVE [XWD BCLIP,1]
00500 BLT 15
00600 HRRZM 13,TVWD; STORE BUFFER POINTER
00700 AOS TVWD
00800 HLREM 13,TVSIZ#; AND BUFFER SIZE
00900 DPB 1,[POINT 3,TVWD+1,20]; BOTTOM CLIP LEVEL
01000 DPB 2,[POINT 3,TVWD+1,23]; TOP CLIP LEVEL
01100 DPB 12,[POINT 3,TVWD+1,26]; TV CAMERA
01200 JUMPE 14,.+2
01300 AOS TVWD+1
01400 MOVEI (6); FIRST LINE
01500 LSH 1
01600 JUMPE 15,.+2; WITH VERTICAL OFFSET
01700 ADDI 1
01800 DPB [POINT 9,TVWD+2,8]
01900 DPB 10,[POINT 9,TVWD+2,17]; OFFSET IN SAMPLES
02000 SUBI 11,-1(10); COMPUTE IWID
02100 MOVEM 11,IWID
02200 IDIVI 11,11; AND LINLEN;
02300 SKIPE 12
02400 ADDI 11,1
02500 MOVEM 11,LINLEN
02600 DPB 11,[POINT 7,TVWD+2,26]
02700 SUBI 6,1(7); COMPUTE # OF WORDS NEEDED
02800 IMULI 6,(11)
02900 CAMG 6,TVSIZ; AND CHECK SIZE
03000 MOVE 6,TVSIZ
03100 HRLM 6,TVWD; AND STORE WORD COUNT
03200 MOVEI 1,4; SAMPLE SIZE
03300 MOVEM 1,BITS
03400 SUBR ADJUST; AND POINTERS FOR OTHER HE ROUTINES
03500 LAB50: MOVNI 24; INIT TV CAMERA FOR READ PROCEDURE
03600 INIT DTV,417
03700 SIXBIT /TV/
03800 0
03900 AOJL [ SETZM 1; TRY TWENTY TIMES
04000 CALLI 1,31
04100 JRST LAB50+1]
04200 JUMPL ACSAV
04300 OUTSTR TYPEF; YELL IF NOT AVAILABLE
04400 TTYUUO TEMPZZ#
04500 TTYUUO 11,
04600 JRST LAB50; AND TRY AGAIN IF REQUESTED
00100 ; GREY CODE CONVERSION ROUTINE (SUPER FAST)
00200
00300 CONV: SKIPE STV; TEST IF ALREADY CONVERTED
00400 POPJ 17,
00500 SETOM STV; SET CONVERSION FLAG
00600 SUBR ACSAVE; SAVE ACS
00700 HRLZI 16,LOOPD; COPY GUTS
00800 BLT 16,14
00900 MOVEM 17,FOOZ#
01000 MOVE 16,TVWD
01100 JRST ; AND EXECUTE IT
01200 FOOX: MOVE 17,FOOZ
01300 JRST ACSAV; PUT BACK ACS AND RETURN
01400
01500 LOOPD: PHASE 0; GUTS OF CONVERSION ROUTINE
01600 SETCM 17,(16); THE LACK OF COMMENTS IS DELIBERATE
01700 MOVE 15,17
01800 LSH 15,-1
01900 AND 15,13
02000 XORB 17,15
02100 LSH 15,-2
02200 AND 15,14
02300 XOR 17,15
02400 MOVEM 17,(16)
02500 AOBJN 16,
02600 JRST FOOX
02700 BYTE (4) 7,7,7,7,7,7,7,7,7
02800 BYTE (4) 3,3,3,3,3,3,3,3,3
02900 DEPHASE
03000
03100 ; MISC ROUTINES
03200
03300
03400 ACSAVE: MOVEM ACS
03500 MOVE [XWD 1,ACS+1]
03600 BLT ACS+16
03700 POPJ 17,
03800
03900 ACSAV: HRLZI 16,ACS
04000 BLT 16,16
04100 POPJ 17,
04200
04300 ACS: BLOCK 17
04400
04500 TVINN: SUBR TVMOVE; EASY CALL OF INPUT ROUTINES
04600 SUBR TVREAD
04700 RELEASE DTV,
04800 SUBR CONV
04900 RETURN
00100 ; ERROR ROUTINES FOR TVREAD AND POT READING
00200
00300 HANG: SPCWAR 636367
00400 OUTSTR CRLF; OUTPUT SELECTED ERROR MESSAGE
00500 OUTSTR @MESAG-1(1)
00600 OUTSTR CRLF
00700 JRST @EXT-1(1); AND DISPATCH TO RECOVERY ROUTINE
00800
00900 LAB3: SKIPN ERROR#; DOES USER WANT TO HALT
01000 HALT LAB25
01100
01200 MESAG: M1 ; DISPATCH TABLE FOR ERROR MESSAGES
01300 M2
01400 M3
01500 M4
01600 M5
01700 M6
01800 M7
01900 M8
02000 M9
02100 M10
02200 M11
02300
02400 EXT: LAB3 ; DISPATCH TABLE FOR ERROR RECOVERY
02500 LAB25
02600 LAB3
02700 LAB3
02800 LAB3
02900 LAB25
03000 LAB3
03100 LAB3
03200 LAB25
03300 LAB25
03400 LAB3
03500
03600 CRLF: ASCIZ .
03700 .
03800 M1: ASCIZ .TV IS HUNG - TVINN.
03900 M2: ASCIZ .POTS TOO NOISY - TVINN.
04000 M3: ASCIZ .SPCWAR JOB HUNG - TVINN.
04100 M4: ASCIZ .MAIN JOB HUNG ON ENTRY - TVINN.
04200 M5: ASCIZ .AD IS HUNG - TVINN.
04300 M6: ASCIZ .AD DATA MISSED - TVINN.
04400 M7: ASCIZ .MAIN JOB HUNG ON EXIT - TVINN.
04500 M8: ASCIZ .TVCAM≠1 or 2 and POTREAD - TVINN.
04600 M9: ASCIZ .PARITY ERROR - TVINN.
04700 M10: ASCIZ .TV DATA MISSED - TVINN.
04800 M11: ASCIZ .SYS ERR - TVINN.
04900 TYPEF: ASCIZ .CANNOT INIT TV, TYPE CHAR TO RETRY
05000 .
05100 END